<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd">
<html><head>
<title>module</title>
</head><body>
<p>[<a href="mxdoc.htm">mainpage</a>]
[<a href="tags.htm">tags</a>]<br>
<h1>tag: module</h1><ul><li>
<p><b>Wrappers for C memory management functions with error checking</b><p>

This module contains macros and functions that perform as wrappers
for standard C memory management functions, malloc, realloc and free.  The
wrapper functions check for incorrect use realloc and free, memory overrun
errors and double free errors.  If, at program termination, that memory has
not been properly free'd then error messages are written to stderr with the
unfreed memory allocations.  Logging of all memory management function calls
to stderr can be turned on to aid in debugging.  The wrappers can be 'turned
off' at compile time for zero overhead.  
(<a href="../include/deds/alloc.h">../include/deds/alloc.h</a>)<br>(library <a href="deds.htm">deds</a> : module <a href="deds_alloc.htm">alloc</a>)
<p></li>
<li>
<p><b>Reference counting atom with delete locking</b><p>

This module contains code for adding reference counting and delete
locking to object by 'deriving' then from a base MX_ATOM object.  
(<a href="../include/deds/atom.h">../include/deds/atom.h</a>)<br>(library <a href="deds.htm">deds</a> : module <a href="deds_atom.htm">atom</a>)
<p></li>
<li>
<p><b>Boolean true and false macros</b><p>
Boolean true and false macros.
 
(<a href="../include/deds/bool.h">../include/deds/bool.h</a>)<br>(library <a href="deds.htm">deds</a> : module <a href="deds_bool.htm">bool</a>)
<p></li>
<li>
<p><b>Double linked list structure handling macros.</b><p>

This module conatins some convenience macros for handling double
linked list structures.  
(<a href="../include/deds/dllist.h">../include/deds/dllist.h</a>)<br>(library <a href="deds.htm">deds</a> : module <a href="deds_dllist.htm">dllist</a>)
<p></li>
<li>
<p><b>Simple macros for maximum and minimum of two values.</b><p>

In this module we declate macros to the maximum and minimum of two
values.  This avoids potential conflicts with other libraries.  
(<a href="../include/deds/maxmin.h">../include/deds/maxmin.h</a>)<br>(library <a href="deds.htm">deds</a> : module <a href="deds_maxmin.htm">maxmin</a>)
<p></li>
<li>
<p><b>Typedefs for memory managment functions.</b><p>

This module contains typedefs for memory allocation functions similar
to the stdlib malloc/realloc/free functions.  
(<a href="../include/deds/memtype.h">../include/deds/memtype.h</a>)<br>(library <a href="deds.htm">deds</a> : module <a href="deds_memtype.htm">memtype</a>)
<p></li>
<li>
<p><b>Basic rectangle handling</b><p>

This module contains typedefs, functions and macros for handling
rectangles.  Also included are macros to determine intersections and unions
areas.  
(<a href="../include/deds/rect.h">../include/deds/rect.h</a>)<br>(library <a href="deds.htm">deds</a> : module <a href="deds_rect.htm">rect</a>)
<p></li>
<li>
<p><b>Rectangles with reference counting.</b><p>

This module contains code for MX_RECTATOM which is a MX_RECT with
reference counting.  The reference counting is done my deriving MX_RECTATOM
from MX_ATOM.  Additional macros exist for reading rectangle positioning and 
dimensions.  
(<a href="../include/deds/rectatom.h">../include/deds/rectatom.h</a>)<br>(library <a href="deds.htm">deds</a> : module <a href="deds_rectatom.htm">rectatom</a>)
<p></li>
<li>
<p><b>Some simple string allocation and handling functions.</b><p>

This module contains functions for object-oriented handling of
const char* strings in C.  Strings can be either zero-terminated or have some 
fixed length.  The contents of the string cannot be (easily) changed.
<p>
MX_STRING is bit-copy-correct which means that a binary copy retains
proper functioning and takes over ownership of internal buffers.  The copy
source MX_STRING should not be used once the copy takes place.
<p>
Memory containing a MX_STRING can be realloc'd without affecting proper
operation.  Therefore it can be used inside a MX_VECTOR.  
(<a href="../include/deds/string.h">../include/deds/string.h</a>)<br>(library <a href="deds.htm">deds</a> : module <a href="deds_string.htm">string</a>)
<p></li>
<li>
<p><b>Tree structure handling macros</b><p>

This module conatins some convenience macros for handling tree
structures.  If you define your type as <pre>
typedef struct YOURTYPE {
    ...
    MX_TREE(struct YOURTYPE);
    ...
} YOURTYPE; </pre>
Then you can use these macros to manipulate your type as a tree.
 
(<a href="../include/deds/tree.h">../include/deds/tree.h</a>)<br>(library <a href="deds.htm">deds</a> : module <a href="deds_tree.htm">tree</a>)
<p></li>
<li>
<p><b>A 100% typesafe generic vector for C.</b><p>

This module contains macros, types and functions for MX_VECTOR whic is a
a 100% typesafe generic vector object for C.  The underlying type must be
bit-copy-correct which means that a binary copy retains proper functioning
and takes over ownership of any internal buffers.
<p>
The interface of MX_VECTOR is done through macros and generic type-indenpendent
functions perform the vector operations.  In contrast to C++ vector types,
the code size when using MX_VECTOR is constant regardless of how many vector
types are instantiated.
<p>
The correct operation of MX_VECTOR depends on some things that not in the C
standard:<ul>
<li>Size of pointer to void and pointer to other types are the same size,
representation and alignment</li>
<li>Writing data in a element of a union and reading out of a different
element works as expected</li>
</ul>
All of the compilers I have tested give no warnings on the
MX_VECTOR code and seem to function properly.  I have tested 16 and 32 bit
compilers as well as compilers with various byte orders.
<p>
MX_VECTOR objects themselves are bit-copy-correct which means that memory 
containing a MX_VECTOR can be safely realloc'd and MX_VECTOR can be used 
inside another MXVECTOR.
<p>
Here is a simple example for doubles but the same concept applies to all
bit-copy-correct types.
<pre>
size_t i;
MX_VECTOR(double) dvect;

mx_vector(&dvect);
mx_vector_resize(&dvect, 100);

for (i=0; i &lt; mx_vector_size(&dvect); i++)
   dvect.data[i] = i;
   
mx_vector_free(&dvect);
</pre>

NOTE: All of the mx_vector* functions are in fact macros that may evaluate
the arguments (the vector) more than once.  This is especially true for the
vector itself (the first argument) and any pointer arguments.  Efforts
have been made to evaluate other arguments only once.  So modifiying
arguments in the macro like this:
<pre>
mx_vector_resize(&dvect, n++);
</pre>
will work as expected.  However code like this:
<pre>
mx_vector_resize(vectptr++, n);
</pre>
will not work as expected.
 
(<a href="../include/deds/vector.h">../include/deds/vector.h</a>)<br>(library <a href="deds.htm">deds</a> : module <a href="deds_vector.htm">vector</a>)
<p></li>
<li>
<p><b>Bitmap functions</b><p>
This module implements bitmap functions for DEGFX.  
(<a href="../include/degfx/bitmap.h">../include/degfx/bitmap.h</a>)<br>(library <a href="degfx.htm">degfx</a> : module <a href="degfx_bitmap.htm">bitmap</a>)
<p></li>
<li>
<p>Color encoding

This module contains color encoding macros.  
(<a href="../include/degfx/colors.h">../include/degfx/colors.h</a>)<br>(library <a href="degfx.htm">degfx</a> : module <a href="degfx_colors.htm">colors</a>)
<p></li>
<li>
<p><b>The core DEGFX module</b><p>

This module contains the core DEGFX functions for drawing on the
screen and gettign input from the keyboard and the mouse.  
(<a href="../include/degfx/coregfx.h">../include/degfx/coregfx.h</a>)<br>(library <a href="degfx.htm">degfx</a> : module <a href="degfx_coregfx.htm">coregfx</a>)
<p></li>
<li>
<p>Graphics mode and driver information

This module contains DEGFX graphics mode and driver information.  
(<a href="../include/degfx/driver.h">../include/degfx/driver.h</a>)<br>(library <a href="degfx.htm">degfx</a> : module <a href="degfx_driver.htm">driver</a>)
<p></li>
<li>
<p><b>Font functions</b><p>
This module contains functions related to font drawing .  
(<a href="../include/degfx/font.h">../include/degfx/font.h</a>)<br>(library <a href="degfx.htm">degfx</a> : module <a href="degfx_font.htm">font</a>)
<p></li>
<li>
<p><b>Builtin 8x8 font  </b><p>
(<a href="../include/degfx/font.h">../include/degfx/font.h</a>)<br>(library <a href="degfx.htm">degfx</a> : module <a href="degfx_font.htm">font</a>)
<p></li>
<li>
<p><b>Builtin 8x14 font  </b><p>
(<a href="../include/degfx/font.h">../include/degfx/font.h</a>)<br>(library <a href="degfx.htm">degfx</a> : module <a href="degfx_font.htm">font</a>)
<p></li>
<li>
<p><b>Builtin 8x16 font  </b><p>
(<a href="../include/degfx/font.h">../include/degfx/font.h</a>)<br>(library <a href="degfx.htm">degfx</a> : module <a href="degfx_font.htm">font</a>)
<p></li>
<li>
<p><b>A basic alert window  </b><p>
(<a href="../include/depui/alert.h">../include/depui/alert.h</a>)<br>(library <a href="depui.htm">depui</a> : module <a href="depui_alert.htm">alert</a>)
<p></li>
<li>
<p><b>Core DEPUI functions</b><p>
This module is the core DEPUI module.  It contains code for:
<ul>
<li>DEPUI startup functions</li>
<li>Handling of events</li>
<li>Setting the theme</li>
<li>Setting the default font</li>
<li>Handling of basic gui objects (base objects, text objects, buttons, 
    windows, window borders and the root window</li>
<li>Finding out what portions of an object are visible and getting the theme 
    to draw them.</li>
</ul>
 
(<a href="../include/depui/corepui.c">../include/depui/corepui.c</a>)<br>(library <a href="depui.htm">depui</a> : module <a href="depui_corepui.htm">corepui</a>)
<p></li>
<li>
<p><b>An editable text object</b><p>
This module implements an editable textual object.
<p>It is derived from MX_TEXTUAL and inherits several important functions 
(text set/get/align etc.) from MX_TEXTUAL.  
(<a href="../include/depui/edittext.h">../include/depui/edittext.h</a>)<br>(library <a href="depui.htm">depui</a> : module <a href="depui_edittext.htm">edittext</a>)
<p></li>
<li>
<p><b>A file selector</b><p>
This module implements a file selector object.  
(<a href="../include/depui/filesel.h">../include/depui/filesel.h</a>)<br>(library <a href="depui.htm">depui</a> : module <a href="depui_filesel.htm">filesel</a>)
<p></li>
<li>
<p>Pressing enter/return in the filename area causes the directory and
    file lists to be refreshed with the new pattern.  
(<a href="../include/depui/filesel.c">../include/depui/filesel.c</a>)<br>(library <a href="depui.htm">depui</a> : module <a href="depui_filesel.htm">filesel</a>)
<p></li>
<li>
<p>Clicking on the directory list causes the directory and file
       lists to be refreshed.  
(<a href="../include/depui/filesel.c">../include/depui/filesel.c</a>)<br>(library <a href="depui.htm">depui</a> : module <a href="depui_filesel.htm">filesel</a>)
<p></li>
<li>
<p>Clicking on the file list selects a file.  
(<a href="../include/depui/filesel.c">../include/depui/filesel.c</a>)<br>(library <a href="depui.htm">depui</a> : module <a href="depui_filesel.htm">filesel</a>)
<p></li>
<li>
<p>Pressing OK causes a MX_FILESEL_OK event to be sent to the
            parent window.  WHen halding this event the parent window can call
            mx_filesel_info() to get the selected filename.  The file selector
            widnow is destroyed afetr the MX_FILESEL_OK event.  
(<a href="../include/depui/filesel.c">../include/depui/filesel.c</a>)<br>(library <a href="depui.htm">depui</a> : module <a href="depui_filesel.htm">filesel</a>)
<p></li>
<li>
<p><b>A font selector and loader</b><p>
This module implements a font selector dialog.  
(<a href="../include/depui/fontsel.h">../include/depui/fontsel.h</a>)<br>(library <a href="depui.htm">depui</a> : module <a href="depui_fontsel.htm">fontsel</a>)
<p></li>
<li>
<p><b>A graphics mode and theme selector</b><p>
This module implements a dialog to select and possibly change the
graphics mode an theme.
<p>
When a graphics mode/theme is selected the window sends a MX_GFXSEL_OK
event to the parent window.  The window can get information about the
selected graphics mode and theme using the mx_gfxsel_info() function.  The
information can also be modified by the parent window.  If the parent window
does not reply to the MX_GFXSEL_OK event (or replies with 0), then the
graphics mode/theme gets changed.  
(<a href="../include/depui/gfxsel.h">../include/depui/gfxsel.h</a>)<br>(library <a href="depui.htm">depui</a> : module <a href="depui_gfxsel.htm">gfxsel</a>)
<p></li>
<li>
<p>Pressing the OK button sends a MX_GFXSEL_OK event to the parent
        window and immediatly destroys the graphics mode window.  
(<a href="../include/depui/gfxsel.c">../include/depui/gfxsel.c</a>)<br>(library <a href="depui.htm">depui</a> : module <a href="depui_gfxsel.htm">gfxsel</a>)
<p></li>
<li>
<p>Pressing the APPLY button sends a MX_GFXSEL_OK event to the
        parent window.  
(<a href="../include/depui/gfxsel.c">../include/depui/gfxsel.c</a>)<br>(library <a href="depui.htm">depui</a> : module <a href="depui_gfxsel.htm">gfxsel</a>)
<p></li>
<li>
<p><b>A gui list object</b><p>
This module contains a list object containing a number of selectable elements
and a scrollable area.  
(<a href="../include/depui/list.h">../include/depui/list.h</a>)<br>(library <a href="depui.htm">depui</a> : module <a href="depui_list.htm">list</a>)
<p></li>
<li>
<p><b>A scrollable area</b><p>
This module contains code for a scrollable area.  The area has
vertical or horizontal scrollbars as necessary to display all the objects 
contained in the scroll area.  
(<a href="../include/depui/scroll.h">../include/depui/scroll.h</a>)<br>(library <a href="depui.htm">depui</a> : module <a href="depui_scroll.htm">scroll</a>)
<p></li>
<li>
<p><b>Horizontal and vertical sliders</b><p>

This module contains code for horizontal and vertical sliders.  
(<a href="../include/depui/slider.h">../include/depui/slider.h</a>)<br>(library <a href="depui.htm">depui</a> : module <a href="depui_slider.htm">slider</a>)
<p></li>
<li>
<p><b>A DEPUI system menu  </b><p>
(<a href="../include/depui/sysmenu.h">../include/depui/sysmenu.h</a>)<br>(library <a href="depui.htm">depui</a> : module <a href="depui_sysmenu.htm">sysmenu</a>)
<p></li>
<li>
<p><b>A text editor  </b><p>
(<a href="../include/depui/textedit.h">../include/depui/textedit.h</a>)<br>(library <a href="depui.htm">depui</a> : module <a href="depui_textedit.htm">textedit</a>)
<p></li>
<li>
<p><b>A theme selector and loader</b><p>
This module implements a theme selector dialog.  
(<a href="../include/depui/themesel.h">../include/depui/themesel.h</a>)<br>(library <a href="depui.htm">depui</a> : module <a href="depui_themesel.htm">themesel</a>)
<p></li>
<li>
<p><b>Portable bitfields</b><p>
This module defines the MX_BITFIELD macro so that even compilers
that perform strangely with bitfields can be used.  
(<a href="../include/detk/bitfield.h">../include/detk/bitfield.h</a>)<br>(library <a href="detk.htm">detk</a> : module <a href="detk_bitfield.htm">bitfield</a>)
<p></li>
<li>
<p><b>Default values</b><p>
This module defines a constant value useful as a default value.  
(<a href="../include/detk/default.h">../include/detk/default.h</a>)<br>(library <a href="detk.htm">detk</a> : module <a href="detk_default.htm">default</a>)
<p></li>
<li>
<p><b>Dirty rectangle updating system</b><p>
This module implements a dirty-rectangle updating system.  
(<a href="../include/detk/drs.h">../include/detk/drs.h</a>)<br>(library <a href="detk.htm">detk</a> : module <a href="detk_drs.htm">drs</a>)
<p></li>
<li>
<p><b>Some simple file oriented functions</b><p>

This module contains some simple file oriented functions primarily
intended to be useful for GUI development.  
(<a href="../include/detk/file.h">../include/detk/file.h</a>)<br>(library <a href="detk.htm">detk</a> : module <a href="detk_file.htm">file</a>)
<p></li>
<li>
<p>A region area (collection of rectangles)

This module implements MX_REGION which is a vector of rectangles.  
(<a href="../include/detk/region.h">../include/detk/region.h</a>)<br>(library <a href="detk.htm">detk</a> : module <a href="detk_region.htm">region</a>)
<p></li>
<li>
<p><b>Simple UTF-8 character handling functions</b><p>
This module contains very simple UTF-8 handling functions.  
(<a href="../include/detk/utf8.h">../include/detk/utf8.h</a>)<br>(library <a href="detk.htm">detk</a> : module <a href="detk_utf8.htm">utf8</a>)
<p></li>
</ul><p>Generated by <a href="http://www.deleveld.dds.nl/mxdoc/index.htm">MXDOC</a> 2.2 on Sun Feb  4 15:16:25 2007


</body></html>
